package com.woniu.car.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.woniu.car.entity.TCoupon;
import com.woniu.car.exception.StatisticsException;
import com.woniu.car.mapper.TCouponMapper;
import com.woniu.car.parameter.CouponParameter;
import com.woniu.car.parameter.CouponSearchParameter;
import com.woniu.car.properties.StatisticsProperties;
import com.woniu.car.service.TCouponService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestHeader;

import java.util.UUID;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author wuyanzu
 * @since 2021-06-22
 */
@Service
public class TCouponServiceImpl extends ServiceImpl<TCouponMapper, TCoupon> implements TCouponService {
    
   

    @Override
    public boolean insertCoupon(@RequestHeader("id") int id,CouponParameter parameter) throws StatisticsException {
        if(parameter.getStartTime().after(parameter.getEndTime())){
            throw new StatisticsException("开启时间不能在结束时间后");
        }
        TCoupon coupon = new TCoupon();
        BeanUtils.copyProperties(parameter,coupon);
        coupon.setCouponNo(UUID.randomUUID().toString().replace("-",""));
        coupon.setType(parameter.getType());
        coupon.setImg(parameter.getImg());
        coupon.setStartTime(parameter.getStartTime());
        coupon.setEndTime(parameter.getEndTime());
        coupon.setDeductionMoney(parameter.getDeductionMoney());
        coupon.setDiscountMoney(parameter.getDiscountMoney());
        coupon.setFullMoney(parameter.getFullMoney());
        coupon.setCreateId(id);
        coupon.setCount(parameter.getCount());
        if(id!=0){
            coupon.setCreateRole(1);
        }else{
            coupon.setCreateRole(0);
        }
        return save(coupon);
    }

    //逻辑删除优惠券
    @Override
    public boolean deleteCoupon(Integer couponId) throws StatisticsException {
        TCoupon coupon = getOne(new QueryWrapper<TCoupon>().eq("coupon_id", couponId));
        System.out.println(coupon);
        if (null==coupon||couponId<0)
            throw new StatisticsException(StatisticsProperties.NOUCOUPONMSG);
        coupon.setCount(coupon.getUsedCount());
        coupon.setStatus("0");
        return updateById(coupon);
    }
    
    @Override
    public boolean updateCoupon(CouponParameter parameter) {
        TCoupon coupon = new TCoupon();
        BeanUtils.copyProperties(parameter,coupon);
        return updateById(coupon);
    }
    
    @Override
    public TCoupon searchCoupon(CouponSearchParameter parameter) {
        QueryWrapper<TCoupon> wrapper = new QueryWrapper<>();
        if(null!=parameter.getCouponId())
            wrapper.eq("coupon_id",parameter.getCouponId());
        if(null!=parameter.getCouponNo())
            wrapper.eq("coupon_no",parameter.getCouponNo());
        if(null!=parameter.getType())
            wrapper.eq("type",parameter.getType());
        if (null!=parameter.getStartTime()) 
            wrapper.ge("start_time",parameter.getStartTime());
        if(null!=parameter.getEndTime())
            wrapper.le("end_time",parameter.getEndTime());
        if(null!=parameter.getStatus())
            wrapper.eq("status",parameter.getStatus());
        TCoupon coupon = new TCoupon();
        BeanUtils.copyProperties(parameter,coupon);
        return getOne(wrapper);
    }
    
}
